Modern-day mobile devices are packed with sensors. Usually, a data processing unit, such as a System on Chip (SoC), is provided to receive and process data collected by sensors. To conserve power, the data processing unit is regularly placed into a sleep state when no data is being transferred from sensors to the data processing unit.
Two methods of transferring data from sensors to a data processing unit are commonly utilized. In the first method, also known as the asynchronous method, a sensor with available data to transfer notifies the data processing unit by issuing a Data Ready Interrupt (DRI) signal through a dedicated DRI pin, which wakes the data processing unit up, and transfers the data when the data processing unit is ready. In the second method, also known as the synchronous method, the data processing unit wakes up from the sleep state spontaneously at predetermined time intervals, polls the sensors, and receives data. The synchronous method is more energy efficient in a device comprising multiple sensors because data transfers from more than one sensors may be consolidated into a single poll and transfer session.
Ideally, assuming a sensor delivers only the most current result, polling a sensor at a frequency that coincides with the sensor's sampling frequency is necessary and sufficient to obtain all the data collected by the sensor. However, because the data processing unit and the sensors do not usually share a clock signal and misalignment of clock signals may result, some sensor data samples may be lost and some sensor data samples may be read twice even when the sensors are polled at their sampling frequencies. The phenomenon is exacerbated by the fact that some sensors have a poor clock accuracy (i.e., ±15% deviation over the temperature range and from device to device).